package com.wey.utils;


import cn.hutool.core.collection.CollUtil;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * 随机数工具
 */
public class RandomUtil {

    /**
     * 随机抽取list中一定长度的list
     * @Param objList 需要抽取的额对象
     * @Param size 抽取长度
     */
    public static <T> List<T> randomMultipleList(List<T> objList, Integer size) {
        // 用于存储随机抽取的对象
        List<T> selectedItems = new ArrayList<>();

        if (CollUtil.isEmpty(objList) || size <= 0) return selectedItems;

        // 需要随机抽取的对象数量
        int numberOfItemsToSelect = size;
        if (objList.size() < size){
            numberOfItemsToSelect = objList.size();
        }

        // 创建一个随机数生成器
        Random random = new Random();

        // 随机抽取对象
        while (selectedItems.size() < numberOfItemsToSelect) {
            int randomIndex = random.nextInt(objList.size());
            T obj = objList.get(randomIndex);

            // 避免重复选择同一对象
            if (!selectedItems.contains(obj)) {
                selectedItems.add(obj);
            }
        }
        return selectedItems;
    }
}
